<?php

namespace Multilang;

use Pinenut\Form;

/**
 * Panel Approve Form Action
 */

class PanelApproveFormAction extends \Action
{
	protected static $isPublic = true;
	
	// Указываем view
	protected static $defaultViews = ['#multilang.panelApproveForm'];
	
	// Указываем ClassConfig для формы
	protected static $_panelApproveFormConfig = '\Multilang\PanelApproveFormConfig';
	
	/**
	 * Указываем необходимые неявные параметры
	 * @return multitype:string
	 */
	static function pullParams() {
		return ['sessionId', 'isPost'];
	}
	
	protected function run()
	{
		$langId = $this->request->_langId;
		// отрубаем кеширование если пост-запрос
		if ($this->request->_isPost) {
			$this->response->noCache(true);
		}
	
		// FIXME: это какой-то ёбаный стыд - перестаёт работать позднее статическое связывание
		/// после того как я файнд делаюю ниже, поэтому загрузку конфы выношу сюда
		$class = static::$_panelApproveFormConfig;
		$formConfig = $class::get();
	
		$formConfig['htmlOptions']['action'] = $this->url($this->request->action);
	
		$form = new Form ($this->request->_identity, $this->request->action, $formConfig);

		if ($this->request->_isPost) {
			if (!$form->process($this->request->params())) {
				$this->response->form = $form;
				return;
			}
			
			// уже проверили что всё ок
			$data = $form->getValues();
			
			// Проверяем пришедшие данные на пустоту
			if(!empty($data['approveTranslation']))
			{
				// Преобразуем строку с ID-шниками в массив
				$itemsIds = explode(',', $data['approveTranslation']);
				
				// Сохраняет (аппрувит) перевод из "черновика" в "чистовик"
				// В метод передается массив с ID-шниками ($itemsIds)
				TranslateEntities::approve($itemsIds, $langId, $this->request->_identity);
			}
	
			$form->flush();
			$this->response->noRender(true);
		} else {
			
		}
	
		$this->response->form = $form;
		$this->response->name = $formConfig['entityName'];
	}
}